Saltar al contenido principal

Typing

Aprende a programar con un tipado fuerte y opcional que brinda Python.

Typing​

  • ✨ Cómo Python es un lenguaje de tipado dinámico cuando un proyecto se hace muy grande o tratamos de programar el código lo más profesional posible, necesitamos del tipado fuerte como los que tienen los lenguajes compilados, ya que esto nos ayuda a orientarnos mejor escribiendo un mejor código. Por eso mismo Python nos permite especificar el tipo de dato a clases, variables, funciones entre otras estructuras del lenguaje.

  • ⚠️ Cabe aclarar que especificar el tipo a un cierto objecto en Python, no nos afecta el código porque el tipado fuerte es opcional.

typing.py
i : int = 17
u : str = 15

c : list[dict[str, str]] = [{'J' : 'Hello'}]
q : list[dict[str, int]] = [{'K' : 1509200713}]

Any​

  • ⭐ La clase 'Any' del módulo Typing nos permite indicar que una clase o función pueden retornar cualquier objecto existente en Python.
typing.py
from typing import Any

def a(a : Any) -> Any:

if a[0] == 123:

return 995

elif a[1] == 123 or a[1] == 123123:

return 9000, 123

return a

#Imprimimos el resultado por consola.
print(a([123, 123123, 777]))

Literal​

  • 📡 La clase 'Literal' nos permite crear un tipo literal de valor, a lo que me refiero es que podemos crear un valor con un carácter constante.

  • ☀️ Esto nos permite que nos percatemos que un valor es Literal. Por poner un ejemplo le paso un integer con valor de '123' me daría un error, ya que solo acepta 'a' o 'b'.

typing.py
from typing import Literal

def b(x : Literal['k', 'b']) -> str:

return x

#Imprimimos el resultado por consola.
print(b('k'))

Callable​

  • 🪟 Hace tiempo atrás dije que una función se le puede conocer como 'Callable' o 'Coroutine'. Esta clase nos permite indicar que una función va ser usada como parámetro o para indicar el tipo.
typing.py
from typing import Callable

def h(x : str) -> str:

return x.lower()

def b(x : Callable[[str], str]) -> str:

a = x('Hello')

return a

#Imprimimos el resultado por consola.
print(b(h))

Optional​

  • 🪣 La clase 'Optional' del módulo Typing nos permite indicar que un cierto parámetro de una función es opcional.
typing.py
from typing import Optional

def b(default : Optional[str] = 'Chi') -> str:

return default.lower()

#Nos retorna un string con valor de 'Si', porque no le pasamos ningún parámetro.
print(b())

TypeVar​

  • 🚧 La clase 'TypeVar' del módulo Typing nos permite indicar un valor y tipo único a una variable, a estos se les conoce como Generics. Además nos permite crear variables únicas con diferentes tipos de datos.
typing.py
from typing import TypeVar

Z = TypeVar('Z', int, float)

def b(x : Z) -> Z:

return x

#Imprimimos el resultado por consola.
print(b(11.5))